package com.tjbank.cssys.framework.base.util;

//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.tansun.magicube.framework.base.entity.BaseEntity;
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;

/**
 * 使用的是JWT（☆弃用！！！！）
 * 
 * jwt属于无状态设计，用户登陆的信息关键存放在jwt加密数据里，这种设计下服务器不需要存储jwt密文，只需要解密就能拿到授权信息等用户信息。
 * 
 * 这种设计是一种利用计算力减少token设计下数据库及缓存的压力和设计复杂度，因此它的本质就是不存储登陆授权，而通过密文本身保存授权信息。
 * 
 * jwt不需要服务器存储，信息本身就存储于jwt本身，这种模式无需使用数据库。
 * 
 * 但是这种流行的jwt有一个设计上的缺陷，他通过密文传输用户信息，那么服务器在这种基础结构下是无法做到关闭用户登陆授权的操作，
 * 
 * 如果用户的jwt密文被偷窃，那么黑客就能以用户身份登陆，并且即使知道密文丢失，也无法关闭被偷窃的jwt密文。
 * 
 * jwt，适合轻量的系统和权限不严格系统。
 * 
 * Package : com.tansun.magicube.iam.service.util
 * 
 * @author -- lijiangtao 2020年5月14日 上午9:34:35
 *
 */
public class BaseTokenUtil {

//    public static final String TOKEN_KEY = "847a84348af995b4,1020c31581369834";
//
//    public static final String TOKEN_NAME = "xxxxx_token";

    /**
     * 根据BaseEntity生成token串
     * 
     * @param baseEntity
     * @return
     * @author -- lijiangtao 2020年5月14日 上午9:28:15
     */
//    public static String createToken(BaseEntity baseEntity) {
//        return Jwts.builder().setSubject(JSONObject.toJSONString(baseEntity)).signWith(SignatureAlgorithm.HS512, TOKEN_KEY).compact();
//    }

    /**
     * 根据token获取BaseEntity
     * 
     * @param token
     * @return
     * @author -- lijiangtao 2020年5月14日 上午9:29:56
     */
//    public static BaseEntity parseToken(String token) {
//        String json = Jwts.parser().setSigningKey(TOKEN_KEY).parseClaimsJws(token).getBody().getSubject();
//        BaseEntity baseEntity = JSON.parseObject(json, BaseEntity.class);
//        return baseEntity;
//    }

//    public static void main(String[] args) {
//
//        BaseEntity baseEntity = new BaseEntity();
//        baseEntity.setCreateUser("张三");
//        baseEntity.setId("9999");
//        String token = createToken(baseEntity);
//        System.out.println(token);
//        // eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJjcmVhdGVVc2VyXCI6XCLlvKDkuIlcIixcImlkXCI6XCI5OTk5XCIsXCJpc0RlbGV0ZWRcIjpmYWxzZX0ifQ.KD4-DyYK1Kvpm-nFVfqTDCxR9G6EeEYWXF1d8Rt8wxjcYzN0pPLQMziOLOhcF0lYyTFNLPYbJbwTHXkjTzroJA
//
//        BaseEntity entity = parseToken(token);
//        String jsonString = JSONObject.toJSONString(entity);
//        System.out.println(jsonString);
//        // {"createUser":"张三","id":"9999","isDeleted":false}
//    }
}
